class Solution {
public:
    string printBin(double num) {
        // 如果要将一个介于0和1之间的实数构造为二进制类型，需要记录的就是先将这个数字乘上2然后再将小数点之前的数字记录下来，
        // 然后保留小数点之后的数字，这样直到小数点之后的数字变成0，或者小数点后的数字出现了循环，就无法执行了,如何判断循环呢
        // 因为题目的数据为保证只存在32位的输入，所以如果循环了32次之后还存在值就直接返回ERROR，否则就是得到了答案
        string ret = "0.";
        while(ret.size()<=32&&num!=0)
        {
            num*=2;
            int tmp = num;//获取小数点之前的位置
            ret.push_back(tmp+'0');
            num-=tmp;//去除小数点之前的数字
        }
        if(ret.size()<=32)
        {
            return ret;
        }
        return "ERROR";
    }
};